package cn.edu.wynu.oop.extend;

public class Dog extends Animal{
    // 继承了Animal的非private属性和方法

    // 子类可以有自己的属性和方法
    public String tail; // 尾巴
    public String color; // 毛发颜色属性

    void bark() {
        System.out.println("汪汪汪");
    }

    @Override
    public String toString() {
        return "Dog{" +
                "tail='" + tail + '\'' +
                ", color='" + color + '\'' +
                ", weight=" + weight +
                ", age=" + age +
                '}';
    }

    // 子类可以重写父类的方法; 父类的方法不满足需求,可以子类中重新实现
    @Override
    public void eat() {
        // super.eat();// 默认就是调用父类的方法,也就是动物正在吃饭,不满足需求;super关键字,可以访问父类的属性和方法
        System.out.println("狗正在吃饭");
    }

    public static void main(String[] args) {
        Dog dog = new Dog();
        System.out.println(dog.weight);
        System.out.println(dog.age);
        // System.out.println(dog.type);  // 编译错误，不能访问private属性
        dog.eat();
        dog.bark();
        // 打印一个对象时,其实是调用了对象的toString方法,又因为所有类都继承了Object类.所以所有类都有toString方法
        // 但是默认的toString方法打印的是对象的内存地址,不是我们想要的
        System.out.println(dog);
    }
}
